package com.tedu.interceptor.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyInterceptor1 implements HandlerInterceptor {
    /**
     * 该方法是在SpringMVC框架调用对应Controller指定方法前调用
     * 如果当前方法返回true，则可以继续调用Controller后续操作
     * 如果返回为false，则不再继续调用Controller后续操作(起到了拦截作用)，此时框架会将
     * 本方法处理后的响应对象中设置的内容回复给客户端
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("MyInterceptor1.preHandle方法执行了...");
        return true;//放行
    }
    //该方法是在Controller对应方法掉用完毕后掉用
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("MyInterceptor1.postHandle方法执行了...");
    }

    /**
     * 是在DispatcherServlet处理完本次请求后，即将交给Tomcat将响应回复给客户端前进行
     * 意味着该方法调用后响应即回复给客户端了
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("MyInterceptor1.afterCompletion方法执行了...");
    }
}
